package pe.com.bbva.efcap.servidor.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Repository;

import pe.com.bbva.efcap.servidor.dao.ParametroGeneralDAO;
import pe.com.bbva.efcap.servidor.modelo.entidad.ParametroGeneral;

@Repository
public class ParametroGeneralDAOImpl extends EntidadDAOImpl<ParametroGeneral> implements
ParametroGeneralDAO{

	private static final long serialVersionUID = 1L;
	private Logger logger = Logger.getLogger(this.getClass());

	@Override
	@SuppressWarnings("unchecked")
	public ParametroGeneral buscarParametroGeneralPorNombreCorto(
			String nombreCorto) {
		String hql = "from " + getEntityClass().getName() + " p "
				+ "where p.nombreCorto = :nombreCorto ";
		List<ParametroGeneral> lista = getSession().createQuery(hql).setString("nombreCorto", nombreCorto).list();
		return lista != null ? lista.get(0) : null;
	}

	@Override
	@SuppressWarnings("unchecked")
	public List<ParametroGeneral> buscarParametrosGeneralesPorTipo(Long tipo) {
		String hql = "from " + getEntityClass().getName() + " p "
				+ "where p.parametroGeneral.idParametro = :tipo " + "order by 1 asc ";
		return getSession().createQuery(hql).setLong("tipo", tipo).list();
	}

	@Override
	public ParametroGeneral buscarPorId(Long id) {
		return super.buscarPorId(id);
	}
	
	@Override
	public List<ParametroGeneral> listarParametroByShortName(String param) {
		String hql = "";
		List<ParametroGeneral> lista = new ArrayList<ParametroGeneral>();
		try {
			hql = "from ParametroGeneral a where a.nombreCorto like :param order by a.idParametro";
			lista = getSession().createQuery(hql).setString("param", param+"%").list();
		} catch (Exception e) {
			logger.info(e.getMessage());
		}
		return lista;
	}

	@Override
	public ParametroGeneral getParametroGeneralByID(long idParametroGeneral) {
		return (ParametroGeneral) this.getSession().get(ParametroGeneral.class, idParametroGeneral);
	}

}
